<?php

require_once APPPATH . 'core/BaseDAO.php';

use models\M_datos_socio;

class DatosSocioDAO extends BaseDAO {

    function __construct() {
        parent::__construct();
    }
	
    public function getDatosSocios(){
		
        try {

            $query = $this->em->createQuery('SELECT s FROM models\M_datos_socio s');

            $socios = $query->getResult();

            return empty($socios) ? FALSE : $socios;
			
        } catch (Exception $e) {
            return FALSE;
        }
        
    }
    
    public function getDatosSociosBy($offset, $maxResults, $tipoDocumento = '',$numeroDocumento = '',$apellido = ''){
        
        try {
            
            $comienzo = "SELECT s FROM models\M_datos_socio s";
            
            $where = "";
            
            if(!($tipoDocumento == '' && $numeroDocumento == '' && $apellido == '')){
                
                $where .= ' WHERE ';
                
                $where .= "s.apellido LIKE ".(($apellido == '') ? "'%'" : " '%".$apellido."%' ");
                
                $where .= ($tipoDocumento == '' || $tipoDocumento == 0) ? "" : " AND s.id = ".$tipoDocumento;

                $where .= ($numeroDocumento == '') ? "" : " AND s.numero_documento = ".$numeroDocumento;
                
            }
            
            $consulta = $comienzo.$where.'';
            
            $query = $this->em->createQuery($consulta.' ORDER BY s.apellido, s.nombre, s.numero_documento ASC');
            
            $query->setFirstResult($offset);
            $query->setMaxResults($maxResults);
            
            $socios = $query->getResult();
          
            return empty($socios) ? FALSE : $socios;
			
        } catch (Exception $e) {
            
            return FALSE;
        }
        
    }
    
   
    
    public function getDatosSocioBy($valor, $campo, $tipo) {

        try {

            $comparador = $tipo === 'string' ? 'like' : '=';

            $qb = $this->em->createQueryBuilder();
            $qb->add('select', 's')
                    ->add('from', 'models\M_datos_socio s')
                    ->add('where', 's.' . $campo . ' ' . $comparador . ' ?1')
                    ->setParameter(1, $valor);

            $persona = $qb->getQuery()->getResult();

            return empty($persona) ? FALSE : $persona[0];
        } catch (Exception $e) {

            return FALSE;
        }
    }
    
    public function getDatosSocioRandom(){
        mt_srand (time());
        $valor = mt_rand(6, 39);
        return $this->getDatosSocioBy($valor,"id","int");
    }
    
    
   
    
   
    
   
		
}
